﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RoleHelper
{
    class TEquipo
    {
        private Objeto ManoDcha;                    //0
        private Objeto ManoIzq;                     //1
        private Objeto Cabeza;                      //2
        private Objeto Camisa;                      //3
        private Objeto Pecho;                       //4
        private Objeto Capa;                        //5
        private Objeto AntebrazoIzq;                //6
        private Objeto AntebrazoDcha;               //7
        private Objeto Piernas;                     //8
        private Objeto Pies;                        //9
        //private List<Objeto> Accesorios;

        //gets
        public Objeto getManoDcha()
        {
            return ManoDcha;
        }
        public Objeto getManoIzq()
        {
            return ManoIzq;
        }
        public Objeto getCabeza()
        {
            return Cabeza;
        }
        public Objeto getCamisa()
        {
            return Camisa;
        }
        public Objeto getPecho()
        {
            return Pecho;
        }
        public Objeto getCapa()
        {
            return Capa;
        }
        public Objeto getAntebrazoIzq()
        {
            return AntebrazoIzq;
        }
        public Objeto getAntebrazoDcha()
        {
            return AntebrazoDcha;
        }
        public Objeto getPiernas()
        {
            return Piernas;
        }
        public Objeto getPies()
        {
            return Pies;
        }
        //sets
        public bool setManoDcha(Objeto obj)
        {
            if (ManoDcha != null)
            {
                ManoDcha = obj;
                return true;
            }
            else
                return false;
        }
        public bool setManoIzq(Objeto obj)
        {
            if (ManoIzq != null)
            {
                ManoIzq = obj;
                return true;
            }
            else
                return false;
        }
        public bool setCabeza(Objeto obj)
        {
            if (Cabeza != null)
            {
                Cabeza = obj;
                return true;
            }
            else
                return false;
        }
        public bool setCamisa(Objeto obj)
        {
            if (Camisa != null)
            {
                Camisa = obj;
                return true;
            }
            else
                return false;
        }
        public bool setPecho(Objeto obj)
        {
            if (Pecho != null)
            {
                Pecho = obj;
                return true;
            }
            else
                return false;
        }
        public bool setCapa(Objeto obj)
        {
            if (Capa != null)
            {
                Capa = obj;
                return true;
            }
            else
                return false;
        }
        public bool setAntebrazoIzq(Objeto obj)
        {
            if (AntebrazoIzq != null)
            {
                AntebrazoIzq = obj;
                return true;
            }
            else
                return false;
        }
        public bool setAntebrazoDcha(Objeto obj)
        {
            if (AntebrazoDcha != null)
            {
                AntebrazoDcha = obj;
                return true;
            }
            else
                return false;
        }
        public bool setPiernas(Objeto obj)
        {
            if (Piernas != null)
            {
                Piernas = obj;
                return true;
            }
            else
                return false;
        }
        public bool setPies(Objeto obj)
        {
            if (Pies != null)
            {
                Pies = obj;
                return true;
            }
            else
                return false;
        }
        //varias
        public void Vaciar()
        {
            ManoDcha = null;
            ManoIzq = null;
            Cabeza = null;
            Camisa = null;
            Pecho = null;
            Capa = null;
            AntebrazoDcha = null;
            AntebrazoIzq = null;
            Piernas = null;
            Pies = null;
        }
        public bool Equipado(Object obj)
        {
            if (obj == ManoDcha)
                return true;
            else if (obj == ManoIzq)
                return true;
            else if (obj == Cabeza)
                return true;
            else if (obj == Camisa)
                return true;
            else if (obj == Pecho)
                return true;
            else if (obj == Capa)
                return true;
            else if (obj == AntebrazoDcha)
                return true;
            else if (obj == AntebrazoIzq)
                return true;
            else if (obj == Piernas)
                return true;
            else if (obj == Pies)
                return true;
            else
                return false;

        }
        public bool Equipar(Object obj, int sitio)
        {
            bool equipado = false;
            switch (sitio)
            {
                case 0:
                    equipado = setManoDcha(obj);
                    break;
                case 1:
                    equipado = setManoIzq(obj);
                    break;
                case 2:
                    equipado = setCabeza(obj);
                    break;
                case 3:
                    equipado = setCamisa(obj);
                    break;
                case 4:
                    equipado = setPecho(obj);
                    break;
                case 5:
                    equipado = setCapa(obj);
                    break;
                case 6:
                    equipado = setAntebrazoIzq(obj);
                    break;
                case 7:
                    equipado = setAntebrazoDcha(obj);
                    break;
                case 8:
                    equipado = setPiernas(obj);
                    break;
                case 9:
                    equipado = setPies(obj);
                    break;
                default:
                    equipado = false;
                    break;
            }
            return equipado;
        }
    }


    class TInventario
    {
        private List<Objeto> Objetos;
        private int Cantidad()
        {
            return Objetos.Count;
        }
        private TEquipo Equipo;

        public void Añadir(Objeto obj)
        {
            Objetos.Add(obj);
        }

        public void Añadir(List<Objeto> objs)
        {
            for (int i = 0; i < objs.Count; i++)
                Objetos.Add(objs[i]);
        }

        public void VaciarTodos()
        {
            Objetos.Clear();
            Equipo.Vaciar();
        }

        public void SoltarSaca()
        {
            int max = Objetos.Count;
            for (int i = 0; i < max; i++)
            {
                if ((Objetos[i] != null) && (!Equipo.Equipado(Objetos[i])))
                    Objetos.RemoveAt(i);
            }
        }

        public bool Equipar(int posicion, int sitio)
        {
            bool equipado=false;
            if ((Objetos[posicion]!=null) && (!Equipo.Equipado(Objetos[posicion])))
            {
                equipado=Equipo.Equipar(Objetos[posicion],sitio);

            }
            return equipado;


    }
}
